package com.learning.mybatis.mapper.insert.mapper;

import com.learning.mybatis.mapper.insert.entity.User;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * ClassName: IUserMapping
 * Description:
 * Date: 2020/7/22 9:56 【需求编号】
 *
 * @author Sam Sho
 * @version V1.0.0
 */
@Repository
public interface IUserMapper {

    /**
     * 新增。返回一个整数
     *
     * @param user
     * @return
     */
    int add(User user);

    /**
     * 主键回填。
     * <p>
     * 1. keyProperty="id"。 （仅适用于 insert 和 update）指定能够唯一识别对象的属性（指定主键字段）。
     * <p>
     * 2. useGeneratedKeys="true"。这个主键是否使用数据库内置策略。
     * 3. ID 会回填到 User 类型中
     *
     * @param user
     * @return
     */
    int addGeneratedKeys(User user);

    /**
     * 批量的新增
     *
     * @param user
     * @return
     */
    int addBatch(List<User> user);

    /**
     * 其他的主键处理方式
     *
     * @param user
     * @return
     */
    int addRand(User user);

    /**
     * 查询
     *
     * @param id
     * @return
     */
    User select(@Param("id") int id);


}
